class Solution 
{
public:
    long long beautifulSubarrays(vector<int>& nums) 
    {
        long long ans = 0;
        int sum = 0;
        unordered_map<int, int> cnt{{0, 1}};
        
        for (auto &t : nums)
        { 
            sum ^= t;
            ans += cnt[sum];
            cnt[sum]++;
        }
        return ans;
    }
};